package repertorioInstrucciones;

import comun.Natural;

import maquina.Dato;
import maquina.PilaTrabajo;

public class DesplazaIzda extends Instruccion {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public DesplazaIzda(){
		super();
	}
	@Override
	public PilaTrabajo accion(PilaTrabajo pilaT) {
		Dato a =(Dato) pilaT.getPila().pop();
		Dato b =(Dato) pilaT.getPila().pop();
		int num;
		if( b.getDato() instanceof Natural){
			num= ((Natural)b.getDato()).getValor();
		}else num = (Integer) b.getDato();
		int nBytes=0 ;
		if( a.getDato() instanceof Natural){
			nBytes = ((Natural)a.getDato()).getValor();
		}else {
			nBytes = (Integer)a.getDato();
		}
		num = num << nBytes;
		Dato<Natural> d = new Dato<Natural>(new Natural(num));
		pilaT.getPila().push(d);
		return pilaT;
	}

}
